package com.example.demo.common;


import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


/**
 *   注意加注解
 *  自定义拦截器
 *  要想实现拦截器还需要进行配置，现在只是一个普通的类
 */

@Component  // 注意点1
public class LoginInterceptor implements HandlerInterceptor {
    // 需要重写 preHandle 方法
    // 这是调用目标方法之前执行的方法
    //      如果返回的是 true 表示(拦截器)验证成功，继续走后续的流程，执行目标方法；
    //      如果返回 false，这表示拦截器执行失败，验证未通过，后续的流程和目标方法不要执行了。

    @Override  // 注意点 2 ， preHandle
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //return HandlerInterceptor.super.preHandle(request, response, handler);

        // 用户登录判断业务
        // getSession 中需要设置 false，默认是true，没有会话就创建一个会话，false没有会话不创建
        HttpSession session = request.getSession(false);
        if(session != null && session.getAttribute("session_userinfo") != null) {
            // 用户已经登陆
            return true;
        }
        // 注意 Java 中 双引号要加上 \ ，转义一下
//        response.sendRedirect("https://www.baidu.com");
        response.setStatus(401);
        return false;
    }
}
